<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-size: 18px;
    }

    #app {
      padding: 10px 20px;
    }

    .query {
      margin: 10px 0;
    }

    .box {
      display: flex;
    }

    textarea {
      width: 300px;
      height: 160px;
      font-size: 18px;
      border: 1px solid #dedede;
      outline: none;
      resize: none;
      padding: 10px;
    }

    textarea:hover {
      border: 1px solid #1589f5;
    }

    .transbox {
      width: 300px;
      height: 160px;
      background-color: #f0f0f0;
      padding: 10px;
      border: none;
    }

    .tip-box {
      width: 300px;
      height: 25px;
      line-height: 25px;
      display: flex;
    }

    .tip-box span {
      flex: 1;
      text-align: center;
    }

    .query span {
      font-size: 18px;
    }

    .input-wrap {
      position: relative;
    }

    .input-wrap span {
      position: absolute;
      right: 15px;
      bottom: 15px;
      font-size: 12px;
    }

    .input-wrap i {
      font-size: 20px;
      font-style: normal;
    }
  </style>
</head>

<body>
  <!-- 
    watch: 监视数据变化，执行一些 业务逻辑 或异步操作
    写法：
    const app = new Vue({
      el:"app",
      data:{
        name:'xxx',
        obj:{
          like:'ooo'
        }      
      },


      // 数据监听机制， 与data同级
      watch:{
      //对于简单的数据类型监听
      属性名(该属性的新值,该属性的旧值){
        一些异步操作 或逻辑
      }，

      //对于对象的数据类型监听
      对象名.属性名(该属性的新值,该属性的旧值){
        一些异步操作 或逻辑
      }
      
      }
    
    
    })
  
  
  
    -->


  <div id="app">
    <!-- 条件选择框 -->
    <div class="query">
      <span>翻译成的语言：</span>
      <select>
        <option value="italy">意大利</option>
        <option value="english">英语</option>
        <option value="german">德语</option>
      </select>
    </div>

    <!-- 翻译框 -->
    <div class="box">
      <div class="input-wrap">
        <textarea v-model="words"></textarea>
        <span><i>⌨️</i>文档翻译</span>
      </div>
      <div class="output-wrap">
        <div class="transbox">mela</div>
      </div>
    </div>
  </div>
  <script src="../vue/vue.js"></script>
  <script src="../vue/axios.js"></script>
  <script>
    // 接口地址：https://applet-base-api-t.itheima.net/api/translate
    // 请求方式：get
    // 请求参数：
    // （1）words：需要被翻译的文本（必传）
    // （2）lang： 需要被翻译成的语言（可选）默认值-意大利
    // -----------------------------------------------

    const app = new Vue({
      el: '#app',
      data: {
        words: '',
        // obj: {
        //   words: ''
        // }
      },
      // 具体讲解：(1) watch语法 (2) 具体业务实现
      watch: {
        // 监听属性变化（新值，老值）
        words(newdatas, olddatas) {
          console.log('变化了', newdatas, olddatas);
        },
        // 对于非直接属性：
        // 'obj.words'(newdatas, olddatas) {
        //   console.log('变化了', newdatas, olddatas);
        // }

        // 完整写法：
        obj: {  //要监听的数据对象
          deep: true, // 深度监视 ， 监视该对象的所有属性值，任何一个属性值发生变化都会调用handle函数
          immediate: true, // 表明进入页面就立即执行一次handler函数
          handler(newdatas, olddatas) {  // 逻辑处理函数
            console.log('变化了', newdatas, olddatas);
          }
        }
      }
    })


    // 防抖也可以叫延迟执行 ， 干啥事先等等， 一段时间没有重复提交，我便执行
  </script>
</body>

</html>